// 金额相关校验 - 按照validator.js标准

// 通用金额校验（最多指定小数位）
export function isAmount(str, maxDecimals = 2) {
  if (!str) return true
  const reg = new RegExp(`^(0|[1-9]\\d*)(\\.\\d{1,${maxDecimals}})?$`)
  return reg.test(str)
}

// 是否为金额（最多2位小数）
export function isAmountTwoDecimal(str) {
  return isAmount(str, 2)
}

// 是否为金额（最多3位小数）
export function isAmountThreeDecimal(str) {
  return isAmount(str, 3)
}

// 通用百分比校验（0-100，最多指定小数位）
export function isPercentage(str, maxDecimals = 2) {
  if (!str) return true
  const reg = new RegExp(`^(100(\\.0{1,${maxDecimals}})?|([1-9]?\\d)(\\.\\d{1,${maxDecimals}})?)$`)
  return reg.test(str)
}

// 是否为税率（0-100，最多2位小数）
export function isTaxRate(str) {
  return isPercentage(str, 2)
}

// 是否为折扣（0-1之间，最多3位小数）
export function isDiscount(str) {
  if (!str) return true
  const reg = /^(0(\.\d{1,3})?|1(\.0{1,3})?)$/
  return reg.test(str)
}

// 是否为价格（正数，最多2位小数）
export function isPrice(str) {
  if (!str) return true
  const reg = /^([1-9]\d*)(\.\d{1,2})?$/
  return reg.test(str)
}